package contracheque.calculo;

public class Imposto {
    
    protected double minimo[];
    protected double maximo[];
    protected double percentual[];
    
    public Imposto() {
        
    }
    
    public String getFaixa(double salario) {        
        int faixa = getNrFaixa(salario);
        if ( faixa == -1 )
            return "Faixa não localizada!";
        else
            return getFaixa(faixa);
    }
    
    public double getPercentual(double salario) {
        int faixa = getNrFaixa(salario);
        if ( faixa == -1 )
            return 0;
        else
            return this.percentual[faixa-1];
    }
    
    public double calcularValor(double salario) {
        int faixa = getNrFaixa(salario);
        if ( faixa == -1 )
            return 0;
        else
            return salario * this.percentual[faixa-1] / 100;
    }
    
    public String getFaixa(double salario, boolean mostrarPercentual) {
        int faixa = getNrFaixa(salario);
        return getFaixa(salario) + (mostrarPercentual ? " - " + this.percentual[faixa-1] + "%" : "");
    }
    
    public String getFaixa(int faixa) {
        if ( faixa < 1 || faixa > percentual.length ) 
            return "Faixa inexistente!";
        else
            return this.minimo[faixa-1] + " - " + this.maximo[faixa-1];
    }
    
    public String getFaixa(int faixa, boolean mostrarPercentual) {
        if ( faixa < 1 || faixa > percentual.length ) 
            return "Faixa inexistente!";
        else
            return getFaixa(faixa) + (mostrarPercentual ? " - " + this.percentual[faixa-1] + "%" : "");
    } 
    
    public int getNrFaixa(double salario) {
        for( int i = 0; i < percentual.length; i++ ) {
            if ( salario >= minimo[i] && salario <= maximo[i] )
                return i+1;
        } 
        return -1;
    }
}
